package Day9;

import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
/**
 * 2021Java真题:异或数列
 * https://www.lanqiao.cn/problems/1450/learning/
 */
public class Main1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        int t = scan.nextInt();
        while(t-- != 0){
          int n = scan.nextInt();
          int[] arr = new int[20];
          for(int i = 0; i < n; i++){
            //得到每一个数
            int x = scan.nextInt();
            int p = 0;
            //计算所有数的二进制位对应位置1的个数
            while(x != 0){
              arr[p++]+=(x & 1);
              x >>= 1;
            }
          }
          int count = 0;//平局
          //从最高位开始遍历，拿到每个位置对应1的个数
          for(int i = 19; i >= 0; i--){
            //如果这个位置的数&1还等于1，就代表这个位置1的个数是奇数个，同时也代表这个位置就是最高位
            //因为如果是偶数个1进行异或那么此时位置的值就为0，奇数个就为1，因此第一个奇数位就最高位
            if((arr[i] & 1) == 1){
              //如果最高位1的个数为1 或者 总共就1个数，就是A获胜,否则就B获胜
              //(因为是采取最优策略，如果最高位为1或者就一个数，那么必然就是先手获胜)
              //例如 3(011) , 1(001)
              //采取最优策略：A先手必然拿最大的 A = 3  , B = 1 A获胜, 同时我们的 3 ^ 1 = 1(001)此时最高位为1(奇数个)，A获胜
              //但如果不是这种情况就是B获胜
              //例如有三个数7(111) , 5(101) , 3(011),采取最优策略：A先手必然拿最大的 此时 A = 0 ^ 7 = 7 , B = 0 ^ 5 = 5 ,最终的结果就看A的选择
              //但将三个数异或后发现 7 ^ 5 ^ 3 = 1(001 / 1)此时最高为位就是 1 ，此时无论 A 是选择1: A ^ 3 = 4(100) < 5 还是选择2: B ^ 3 = 6(110) > 5
              //此时不论哪种情况都是B获胜
              count = (arr[i] == 1 || (n & 1) == 1) ? 1 : -1;
              break;
            }
          }
          System.out.println(count);
        }
        scan.close();
    }
}